/*
* 包含n个操作数据库集合数据的Model模块
* */

/*1.连接数据库*/
// 1.1 引入mongoose数据库
const mongoose = require('mongoose')
// 1.2 连接指定数据库(URL只有数据库是变化的)
mongoose.connect('mongodb://localhost:27017/chinaunicom')
// 1.3 获取连接对象
const conn = mongoose.connection
// 1.4 绑定连接完成的监听(用来提示连接成功)
conn.on('connected', function() { // 连接成功回调
    console.log('数据库连接成功!!!')
})

/* 2.2 定义Model(与集合对应,可以操作集合) 并向外暴露 */
// 2.1 定义Schema(描述文档结构)
const userSchema = mongoose.Schema({
    // 指定文档的结构 : 属性名/属性值的类型 是否是必须的, 默认值
    username: {type: String, required: true},  // 用户名
    password: {type: String, required: true},  // 密码
    type: {type: String, required: true},    // 用户类型: banwei / xueyuan
    header: {type: String},   // 头像名称
    belongClass: {type: String},  // 所属班级
    info: {type: String},   // 个人简介
    school: {type: String},  //  毕业院校
    degree: {type: String},    // 学历 : 本科/硕士/博士
})
// 2.2 定义Model(与集合对应,可以操作集合)
// --- 集合为users
const UserModel = mongoose.model('user', userSchema)
// 2.3 向外暴露Model
exports.UserModel = UserModel



// 定义chats集合的文档结构
const chatSchema = mongoose.Schema({
  from: {type: String, required: true}, // 发送用户的id
  to: {type: String, required: true}, // 接收用户的id
    // a  ->  b  跟  b  ->  a  都应该属于同一组聊天
  chat_id: {type: String, required: true}, // from和to组成的字符串
  content: {type: String, required: true}, // 内容
  read: {type:Boolean, default: false}, // 标识是否已读
  create_time: {type: Number} // 创建时间
})
// 定义能操作chats集合数据的Model
// 集合为: chats
const ChatModel = mongoose.model('chat', chatSchema)
// 向外暴露Model
exports.ChatModel = ChatModel





// 一次性暴露
// module.exports = xxx
// 分别暴露
// exports.xxx = value
// exports.xxx = value
